#
#  Copyright 2022 The Open Islands Authors. All Rights Reserved.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
import typing

from pyoi.types import DataIO, ModelIO, BaseType


class OperatorInput(BaseType):
    def __init__(self):
        self.data: typing.Dict[str, typing.List[DataIO]] = {}
        self.model: typing.Dict[str, typing.List[ModelIO]] = {}

    @classmethod
    def from_json(cls, content: typing.Dict[str, typing.Dict[str, typing.List[typing.Dict]]]):
        input = OperatorInput()
        for input_type in content.get("data").keys():
            input.data[input_type] = []
            for data_content in content["data"][input_type]:
                input.data[input_type].append(DataIO.from_dict(data_content))
        for input_type in content.get("model").keys():
            input.model[input_type] = []
            for model_content in content["model"][input_type]:
                input.model[input_type].append(ModelIO.from_dict(model_content))
        return input
